package com.sfx.concurrent.demo.OtherCoding;

import java.util.Stack;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: sfx
 * Date: 2023-05-05
 * Time: 10:59
 */
public class Code_simplifyPath {

    static class Solution {
        public String simplifyPath(String path) {
            //path 由英文字母，数字，'.'，'/' 或 '_' 组成。
            //   '//' ---> '/'
            //    始终以斜杠 '/' 开头。
            //两个目录名之间必须只有一个斜杠 '/' 。
            //最后一个目录名（如果存在）不能 以 '/' 结尾.
            //路径仅包含从根目录到目标文件或目录的路径上的目录(即不含'.'或'..')
            Stack<StringBuilder> stack = new Stack<>();
            StringBuilder res;
            for (int i = 0; i < path.length(); ) {
                res = new StringBuilder();
                if (path.charAt(i) == '/') {
                    i++;
                    while (i < path.length() && path.charAt(i) != '/') {
                        res.append(path.charAt(i));
                        i++;
                    }
                    if (res.toString().equals("..") && !stack.isEmpty()) {
                        stack.pop();
                        continue;
                    }
                    if (!res.toString().equals("") && !res.toString().equals(".")) {
                        stack.push(res);
                    }
                }
            }
            res = new StringBuilder();
            while (!stack.isEmpty()) {
                res.append(stack.peek().reverse() + "/");
                stack.pop();
            }
            return res.reverse().toString();
        }
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        solution.simplifyPath("/a/./b/../../c/");
        long num1 = 9999L;

    }
}
